dofile "lib/radical.lua"

function ey_tile(s) 
  return const.path.gfx.."game/eye/"..s..".jpg"; 
end

function tile(s) 
  return const.path.gfx.."game/ssk/"..s..".jpg"; 
end

function dxml(s)
  return const.path.dlg.."3-inter/cell/"..s..".xml";
end

cell = engine.state {
   _inv         = 0     --Fohn investigates cell (max to 4)

  ,_chairinv    = false --Chair is investigated
  ,_chair       = false --Chair is moved
  ,_phoneinv    = false --Phone is investigated
  ,_phone       = false --Phone tube is taken
  ,_cam         = false --Cam is 'fixed'
  ,_saw         = false --Fohn saw talking people
  ,_scotch      = false --Phone is fixed
}

cell_player = musplayer.player {
   mus("anxiety"):inside("start3"):loop()
  ,mute():inside("cellroom2_intro1"):fade(3000,3000)
  ,sfx("punch"):inside("cellroom1_pain1")
  ,sfx("chairsqueak"):inside("chairmove_scene"):always()
  ,sfx("bam2"):inside("sleep3")
  ,mus("onechance"):inside("cellroom3"):when("cell._saw"):loop()
  ,sfx("phonenoise"):inside("talk")
  ,sfx("note"):inside("final1")
}

main = engine.main {
   start        = chain_ {
                     episode_("3-cell")
                    ,musplayer_("cell_player")
                    ,walk_("start1")
                  }
  ,finish       = gamefile_("3-inter/shadow.lua")
}


------------------------------------------------------------------------------------------
-- Cell 1
------------------------------------------------------------------------------------------

start1 = anim {
   fps          = 10
  ,frames       = {
                     tile "lamp7"
                    ,tile "lamp6"
                    ,tile "lamp5"
                    ,tile "lamp4"
                    ,tile "lamp3"
                    ,tile "lamp2"
                    ,tile "lamp1"
                    ,tile "lamp2"
                    ,tile "lamp3"
                    ,tile "lamp4"
                    ,tile "lamp5"
                    ,tile "lamp6"
                    ,tile "lamp7"
                  }
  ,pause        = 20
  ,cycles       = 3
  ,x            = 330
  ,y            = 0
  ,snd          = "bulb"
  ,next         = "start2"
}

start2 = pause {
   time         = 2000
  ,next         = "start3"
}

start3 = pause {
   time         = 2000
  ,fading       = 0
  ,next         = "start4"
}

start4 = pause {
   time         = 1
  ,tile         = { tile "cell", 208, 20 }
  ,fading       = 60
  ,next         = "cellroom1"
}

cellroom1 = scene {
   tile         = { tile "cell", 208, 20 }
  ,bounds       = { nil, 400 }
  ,obj          = { "cellroom1_cell", "cellroom1_lamp", "cellroom1_window", "cellroom1_amnesia", "cellroom1_underground", "cellroom1_attack", "cellroom1_unreal" }
}

cellroom1_cell = staticitem {
   dsc          = "Фён стоит посреди тесной и тусклой {камеры}, похожей на пропитанный холодом бетонный склеп."
  ,act          = chain_ {
                    inc_("cell._inv"),
                    [[Все стены заляпаны комковатой белой краской, точно здесь пытались что-то замазать в спешке. Однако у потолка можно 
                      заметить странные черные подтеки... Неужели это кровь? Нет, все это просто не может происходить в действительности.]]
                  }
  ,showonce     = true
}

cellroom1_lamp = staticitem {
   dsc          = "{Лампа} на потолке едва светит,"
  ,act          = [[Она в любую секунду может погаснуть. Фён чувствует это. И тогда ее камера погрузится в черную непроницаемую темноту.^
                    Фён становится страшно.]]
  ,showonce     = true
}

cellroom1_window = staticitem {
   dsc          = "а в коридоре или комнате, куда выходит широкое {окно} с армированным стеклом, совсем темно."
  ,act          = "Фён подходит к окну и {walk(cellroom1_cold1)|касается} его рукой."
  ,disable      = if_("cellroom1_cold1._seen")
}

cellroom1_cold1 = pause {
   time         = 1000
  ,enter        = inc_("cell._inv")
  ,bounds       = { 260, 240, 480 }
  ,dsc          = "Холодное."
  ,next         = "cellroom1_cold2"
}

cellroom1_cold2 = pause {
   time         = 2000
  ,bounds       = { 260, 240, 480 }
  ,dsc          = [[Холодное.^
                    Как и все здесь вокруг.]]
  ,next         = "cellroom1_cold3"
}

cellroom1_cold3 = pause {
   time         = 3000
  ,bounds       = { 260, 240, 480 }
  ,dsc          = [[Холодное.^
                    Как и все здесь вокруг.^
                    Но зачем нужно это окно? Как будто ее заперли в бетонной клетке, и скоро кто-то придет. Чтобы наблюдать за ней как за животным.]]
  ,next         = "cellroom1_cold4"
}

cellroom1_cold4 = cutscene {
   bounds       = { 260, 240, 480 }
  ,dsc          = [[Холодное.^
                    Как и все здесь вокруг.^
                    Но зачем нужно это окно? Как будто ее заперли в бетонной клетке, и скоро кто-то придет. Чтобы наблюдать за ней как за животным.^
                    Скоро. Но пока за окном темно. Час посетителей еще не настал.]]
  ,next         = "cellroom1"
}

cellroom1_amnesia = staticitem {
   dsc          = "Фён даже {не помнит}, как ее привели сюда."
  ,act          = chain_ {
                    inc_("cell._inv"),
                    [[Она пытается как-то восстановить события в своей памяти...^
                      Страшные люди с темнотой вместо лиц. Машина. Ее силой усадили в машину. Потом какие-то безликие комнаты. Вспышки камеры. Чей-то 
                      неприятный голос. Темнота.^
                      Нет, все это не могло происходить в действительности.]]
                  }
  ,showonce     = true
}

cellroom1_underground = staticitem {
   dsc          = [[Кажется, она под землей. На сотни километров {под городом}, и единственный источник Фён здесь -- ее хрупкая заросшая пылью лампа, 
                    которая вот-вот погаснет.^]]
  ,act          = [[Над ней, через сто километров бетона и земли, мертвые выжженные улицы, дороги с брошенными ржавеющими машинами, дома, в которых никто
                    не живет... Как же она хочет вернуться туда.]]
  ,showonce     = true
}

cellroom1_attack = staticitem {
   dsc          = "Что произошло? У нее снова был {приступ}? Как она оказалась здесь?"
  ,act          = walk_("cellroom1_pain1")
  ,disable      = if_("cellroom1_pain1._seen")
}

cellroom1_pain1 = pause {
   time         = 500
  ,fading       = 0
  ,enter        = inc_("cell._inv")
  ,tile         = ey_tile "wake"
  ,next         = "cellroom1_pain2"
}

cellroom1_pain2 = cutscene {
   bounds       = { 260, 240, 480 }
  ,dsc          = [[Да.^
                    Она вспоминает...^
                    Совсем недавно -- кажется, несколько секунд назад... Все тело ее ломало от боли так, что она даже не могла вздохнуть. Голову точно 
                    сжимало железными тисками. Она думала... Она желала только одного. Умереть.]]
  ,next         = walkblack_("cellroom1")
}

cellroom1_unreal = staticitem {
   dsc          = "Надо попробовать {собраться с мыслями}."
  ,act          = [[Фён обходит свою камеру, касается рукой стен, снова подходит к окну... Она вдруг начинает понимать.^
                    Все это просто кажется ей. Так бывает... После приступа...^
                    Скорее всего, она не здесь. Она в каком-то другом месте. Все эти люди с пустотой вместо лиц, эта страшная машина...
                    Все это просто {walk(cellroom1_vision1)|привиделось} ей.]]
  ,cnd          = if_("cell._inv==4")
}

cellroom1_vision1 = scene {
   bounds       = { 300, 260, 480 }
  ,dsc          = "Фён {walk(cellroom1_vision2)|закрывает} глаза и стоит так несколько минут..."
  ,alwaysdsc    = true
}

cellroom1_vision2 = scene {
   bounds       = { 380, 260, 480 }
  ,dsc          = "Потом она {walk(cellroom2_intro1)|открывает} глаза..."
}


------------------------------------------------------------------------------------------
-- Cell 2
------------------------------------------------------------------------------------------

cellroom2_intro1 = pause {
   time         = 3000
  ,fading       = 0
  ,next         = "cellroom2_intro2"
}

cellroom2_intro2 = pause {
   time         = 1
  ,tile         = { tile "cell", 208, 20 }
  ,fading       = 60
  ,next         = "cellroom2"
}

cellroom2 = scene {
   tile         = { tile "cell", 208, 20 }
  ,bounds       = { nil, 400 }
  ,obj          = { "fohn", "bed", "chair", "cellroom2_table", "cam", "phone" }
}

fohn = staticitem {
   dsc          = choose_ {
                     ["default"] = "Вокруг ничего не изменилось. Она по-прежнему в этой камере. По-прежнему над головой светит тусклая угасающая лампа. Фён вдруг понимает, что она страшно {устала}.^"
                    ,["cellroom2._seen"] = "От усталости Фён {едва стоит} на ногах.^"
                  }
  ,act          = "Нужно прилечь, немного отдохнуть."
  ,showonce     = true
}

bed = staticitem {
   dsc          = "Вместо кровати на полу лежит лишь грязный {матрас}, от которого несет чьим-то потом."
  ,act          = choose_ {
                     ["default"] = "Вряд ли получится заснуть, когда на тебя постоянно смотрит эта камера."
                    ,["cell._cam"] = chain_ { stop_music, walk_("sleep1") }
                  }
}

chair = staticitem {
   dsc          = choose_ {
                     ["default"] = "Металлический {стул} у стены такой жесткий и холодный, что на нем невозможно сидеть."
                    ,["cell._chairinv and not cell._chair"] = "Металлический стул часто {передвигали}, и на каменном полу можно заметить следы от его ножек."
                    ,["cell._chairinv and cell._chair"] = "Металлический {стул} стоит у стены, прямо под камерой."
                  }
  ,act          = choose_ {
                     ["default"] = chain_ { set_("cell._chairinv"), "Стул на удивление тяжелый. Чтобы передвинуть его одной рукой, приходится прилагать заметное усилие." }
                    ,["cell._chairinv"] = chain_ { toggle_("cell._chair"), sound_("chairsqueak"), walkblack_("cellroom2", "Фён передвинула стул.") }
                  }
}

cellroom2_table = staticitem {
   dsc          = "Массивный {стол} посреди камеры невозможно сдвинуть с места."
  ,act          = "Похоже, он привинчен к полу."
  ,showonce     = true
}

cam = staticitem {
   dsc          = "Над окном висит массивная черная {камера}."
  ,act          = choose_ {
                     ["default"] = "Пристальный пронизывающий взгляд этой камеры чувствуешь даже спиной."
                    ,["cell._cam"] = "Так-то лучше. Теперь объектив камеры залеплен скотчем."
                  }
}

phone = staticitem {
   dsc          = choose_ {
                     ["default"] = "К панели у двери приделан рычаг с обычной телефонной {трубкой}."
                    ,["cell._phoneinv"] = "Телефонная трубка у дверной панели {едва держится}."
                  }
  ,cnd          = not_("cell._phone")
  ,act          = choose_ {
                     ["default"] = chain_ { set_("cell._phoneinv"), "Наверное, используется для переговоров, чтобы можно было не заходить в камеру. Провод трубки перемотан скотчем." }
                    ,["cell._phoneinv"] = chain_ { set_("cell._phone"), sound_("items3"), take_("phonetube"), take_("scotch"), "Оторвать трубку не составило никакого труда." }
                  }
}

phonetube = item {
   nam          = "Телефонная трубка"
  ,img          = ico "phonetube-use"
  ,ico          = ico "phonetube"
  ,use          = chooseuse_ {
                     ["default"] = "Не стоит этого делать."
                    ,["phoneplace"] = chain_ { unset_("cell._phone"), sound_("items3"), drop_("phonetube"), "Фён повесила трубку на рычаг." }
                  }
}

scotch = item {
   nam          = "Кусок скотча"
  ,img          = ico "scotch-use"
  ,ico          = ico "scotch"
  ,use          = chooseuse_ {
                     ["default"] = "Не стоит этого делать."
                    ,["cam"] = 
                        choose_ {
                           ["default"] = "До камеры никак не дотянуться."
                          ,["cell._chair and not cell._cam"] = chain_ { set_("cell._cam"), "Фён залепила объектив камеры кусочком скотча и спрятала остатки скотча в карман." }
                          ,["cell._cam"] = "Все уже сделано. Камера теперь не видит ее."
                        }
                    ,["phoneplace"] = chain_ { drop_("scotch"), set_("cell._scotch"), "Фён обмотала провода трубки оставшимся скотчем." }
                  }
}

sleep1 = pause {
   time         = 1
  ,fading       = 60
  ,next         = "sleep2"
}

sleep2 = anim {
   fps          = 10
  ,frames       = {
                     tile "lamp7"
                    ,tile "lamp6"
                    ,tile "lamp5"
                    ,tile "lamp4"
                    ,tile "lamp3"
                    ,tile "lamp2"
                    ,tile "lamp1"
                    ,tile "lamp2"
                    ,tile "lamp3"
                    ,tile "lamp4"
                    ,tile "lamp5"
                    ,tile "lamp6"
                    ,tile "lamp7"
                  }
  ,pause        = 20
  ,cycles       = 3
  ,x            = 330
  ,y            = 0
  ,snd          = "bulb"
  ,next         = "sleep3"
}

sleep3 = pause {
   time         = 3000
  ,fading       = 0
  ,next         = "sleep4"
}

sleep4 = pause {
   time         = 1
  ,tile         = { tile "cell", 208, 20 }
  ,fading       = 60
  ,next         = "cellroom3"
}


------------------------------------------------------------------------------------------
-- Cell 3
------------------------------------------------------------------------------------------

cellroom3 = scene {
   tile         = { tile "cell", 208, 20 }
  ,bounds       = { nil, 400 }
  ,dsc          = [[Она снова здесь. И снова ничего не изменилось. Сколько уже прошло времени? Сколько она спала? Час, день, несколько минут?^^]]
  ,obj          = { "cellroom3_talk", "phoneplace" }
}

cellroom3_talk = staticitem {
   dsc          = "В окно камеры можно разглядеть какие-то {фигуры}."
  ,act          = chain_ { set_("cell._saw"), "Это они! Это точни они! Они решают... Они говорят о ней! Надо обязательно услышать..." }
  ,showonce     = true
}

phoneplace = staticitem {
   dsc          = choose_ {
                     ["cell._phone"] = "Из панели на двери торчит {кусок провода}."
                    ,["not cell._phone and not cell._scotch"] = "На рычаге рядом с панелью висит {телефонная трубка}."
                    ,["not cell._phone and cell._scotch"] = "На рычаге рядом с панелью висит {телефонная трубка}."
                  }
  ,cnd          = if_("cell._saw")
  ,act          = choose_ {
                     ["cell._phone"] = "Здесь раньше была телефонная трубка."
                    ,["not cell._phone and not cell._scotch"] = "Так ничего не получается, трубка совсем не держится. Надо бы закрепить провод."
                    ,["not cell._phone and cell._scotch"] = walk_("talk")
                  }
}

talk = cutscene {
   bounds       = { 260, 240, 480 }
  ,enter        = stop_music
  ,dsc          = "По-прежнему ничего не слышно. Лишь странный присвистывающий звук, похожий на чье-то больное дыхание. Быть может, здесь вообще ничего не работает?"
  ,next         = "final1"
}

final1 = pause {
   time         = 2000
  ,next         = "final2"
}

final2 = pause {
   tile         = tile "wall1"
  ,fading       = 60
  ,time         = 1500
  ,next         = "final_dlg"
}

final_dlg = dialog {
   tile         = tile "wall1"
  ,bounds       = { 280, nil, 560 }
  ,dlg          = dxml "astahov"
}